home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / amiga / gnnln920.lha / inline-2.0 / mathieeedoubbas.h < prev    next >
C/C++ Source or Header  |  1992-06-14  |  5KB  |  189 lines

  1. #ifndef _INLINE_MATHIEEEDOUBBAS_H
  2. #define _INLINE_MATHIEEEDOUBBAS_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL extern struct MathIeeeDoubBasBase*  MathIeeeDoubBasBase;
  11. #endif
  12. #ifndef BASE_PAR_DECL
  13. #define BASE_PAR_DECL
  14. #define BASE_PAR_DECL0 void
  15. #endif
  16. #ifndef BASE_NAME
  17. #define BASE_NAME MathIeeeDoubBasBase
  18. #endif
  19.  
  20. static __inline DOUBLE 
  21. IEEEDPAbs (BASE_PAR_DECL DOUBLE parm)
  22. {
  23.   BASE_EXT_DECL
  24.   register DOUBLE  _res  __asm("d0");
  25.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  26.   register DOUBLE d0 __asm("d0") = parm;
  27.   __asm __volatile ("jsr a6@(-0x36)"
  28.   : "=r" (_res)
  29.   : "r" (a6), "r" (d0)
  30.   : "a0","a1","d0","d1");
  31.   return _res;
  32. }
  33. static __inline DOUBLE 
  34. IEEEDPAdd (BASE_PAR_DECL DOUBLE leftParm,DOUBLE rightParm)
  35. {
  36.   BASE_EXT_DECL
  37.   register DOUBLE  _res  __asm("d0");
  38.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  39.   register DOUBLE d0 __asm("d0") = leftParm;
  40.   register DOUBLE d2 __asm("d2") = rightParm;
  41.   __asm __volatile ("jsr a6@(-0x42)"
  42.   : "=r" (_res)
  43.   : "r" (a6), "r" (d0), "r" (d2)
  44.   : "a0","a1","d0","d1","d2","d3");
  45.   return _res;
  46. }
  47. static __inline DOUBLE 
  48. IEEEDPCeil (BASE_PAR_DECL DOUBLE parm)
  49. {
  50.   BASE_EXT_DECL
  51.   register DOUBLE  _res  __asm("d0");
  52.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  53.   register DOUBLE d0 __asm("d0") = parm;
  54.   __asm __volatile ("jsr a6@(-0x66)"
  55.   : "=r" (_res)
  56.   : "r" (a6), "r" (d0)
  57.   : "a0","a1","d0","d1");
  58.   return _res;
  59. }
  60. static __inline LONG 
  61. IEEEDPCmp (BASE_PAR_DECL DOUBLE leftParm,DOUBLE rightParm)
  62. {
  63.   BASE_EXT_DECL
  64.   register LONG  _res  __asm("d0");
  65.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  66.   register DOUBLE d0 __asm("d0") = leftParm;
  67.   register DOUBLE d2 __asm("d2") = rightParm;
  68.   __asm __volatile ("jsr a6@(-0x2a)"
  69.   : "=r" (_res)
  70.   : "r" (a6), "r" (d0), "r" (d2)
  71.   : "a0","a1","d0","d1","d2","d3");
  72.   return _res;
  73. }
  74. static __inline DOUBLE 
  75. IEEEDPDiv (BASE_PAR_DECL DOUBLE dividend,DOUBLE divisor)
  76. {
  77.   BASE_EXT_DECL
  78.   register DOUBLE  _res  __asm("d0");
  79.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  80.   register DOUBLE d0 __asm("d0") = dividend;
  81.   register DOUBLE d2 __asm("d2") = divisor;
  82.   __asm __volatile ("jsr a6@(-0x54)"
  83.   : "=r" (_res)
  84.   : "r" (a6), "r" (d0), "r" (d2)
  85.   : "a0","a1","d0","d1","d2","d3");
  86.   return _res;
  87. }
  88. static __inline LONG 
  89. IEEEDPFix (BASE_PAR_DECL DOUBLE parm)
  90. {
  91.   BASE_EXT_DECL
  92.   register LONG  _res  __asm("d0");
  93.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  94.   register DOUBLE d0 __asm("d0") = parm;
  95.   __asm __volatile ("jsr a6@(-0x1e)"
  96.   : "=r" (_res)
  97.   : "r" (a6), "r" (d0)
  98.   : "a0","a1","d0","d1");
  99.   return _res;
  100. }
  101. static __inline DOUBLE 
  102. IEEEDPFloor (BASE_PAR_DECL DOUBLE parm)
  103. {
  104.   BASE_EXT_DECL
  105.   register DOUBLE  _res  __asm("d0");
  106.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  107.   register DOUBLE d0 __asm("d0") = parm;
  108.   __asm __volatile ("jsr a6@(-0x5a)"
  109.   : "=r" (_res)
  110.   : "r" (a6), "r" (d0)
  111.   : "a0","a1","d0","d1");
  112.   return _res;
  113. }
  114. static __inline DOUBLE 
  115. IEEEDPFlt (BASE_PAR_DECL long integer)
  116. {
  117.   BASE_EXT_DECL
  118.   register DOUBLE  _res  __asm("d0");
  119.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  120.   register long d0 __asm("d0") = integer;
  121.   __asm __volatile ("jsr a6@(-0x24)"
  122.   : "=r" (_res)
  123.   : "r" (a6), "r" (d0)
  124.   : "a0","a1","d0","d1");
  125.   return _res;
  126. }
  127. static __inline DOUBLE 
  128. IEEEDPMul (BASE_PAR_DECL DOUBLE factor1,DOUBLE factor2)
  129. {
  130.   BASE_EXT_DECL
  131.   register DOUBLE  _res  __asm("d0");
  132.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  133.   register DOUBLE d0 __asm("d0") = factor1;
  134.   register DOUBLE d2 __asm("d2") = factor2;
  135.   __asm __volatile ("jsr a6@(-0x4e)"
  136.   : "=r" (_res)
  137.   : "r" (a6), "r" (d0), "r" (d2)
  138.   : "a0","a1","d0","d1","d2","d3");
  139.   return _res;
  140. }
  141. static __inline DOUBLE 
  142. IEEEDPNeg (BASE_PAR_DECL DOUBLE parm)
  143. {
  144.   BASE_EXT_DECL
  145.   register DOUBLE  _res  __asm("d0");
  146.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  147.   register DOUBLE d0 __asm("d0") = parm;
  148.   __asm __volatile ("jsr a6@(-0x3c)"
  149.   : "=r" (_res)
  150.   : "r" (a6), "r" (d0)
  151.   : "a0","a1","d0","d1");
  152.   return _res;
  153. }
  154. static __inline DOUBLE 
  155. IEEEDPSub (BASE_PAR_DECL DOUBLE leftParm,DOUBLE rightParm)
  156. {
  157.   BASE_EXT_DECL
  158.   register DOUBLE  _res  __asm("d0");
  159.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  160.   register DOUBLE d0 __asm("d0") = leftParm;
  161.   register DOUBLE d2 __asm("d2") = rightParm;
  162.   __asm __volatile ("jsr a6@(-0x48)"
  163.   : "=r" (_res)
  164.   : "r" (a6), "r" (d0), "r" (d2)
  165.   : "a0","a1","d0","d1","d2","d3");
  166.   return _res;
  167. }
  168. static __inline LONG 
  169. IEEEDPTst (BASE_PAR_DECL DOUBLE parm)
  170. {
  171.   BASE_EXT_DECL
  172.   register LONG  _res  __asm("d0");
  173.   register struct MathIeeeDoubBasBase* a6 __asm("a6") = BASE_NAME;
  174.   register DOUBLE d0 __asm("d0") = parm;
  175.   __asm __volatile ("jsr a6@(-0x30)"
  176.   : "=r" (_res)
  177.   : "r" (a6), "r" (d0)
  178.   : "a0","a1","d0","d1");
  179.   return _res;
  180. }
  181. #undef BASE_EXT_DECL
  182. #undef BASE_PAR_DECL
  183. #undef BASE_PAR_DECL0
  184. #undef BASE_NAME
  185.  
  186. __END_DECLS
  187.  
  188. #endif /* _INLINE_MATHIEEEDOUBBAS_H */
  189.